index = gtk_text_iter_get_visible_line_index (iter);
- if (index >= display->insert_index)
- index += layout->preedit_len;
+ if (layout->preedit_len > 0 && display->insert_index >= 0)
+ {
+ if (index >= display->insert_index)
+ index += layout->preedit_len;
+ }
return index;
}
g_return_if_fail (!_gtk_text_line_is_last (display->line,
_gtk_text_buffer_get_btree (layout->buffer)));
- if (index >= display->insert_index + layout->preedit_len)
- index -= layout->preedit_len;
- else if (index > display->insert_index)
+ if (layout->preedit_len > 0 && display->insert_index >= 0)
{
- index = display->insert_index;
- trailing = 0;
+ if (index >= display->insert_index + layout->preedit_len)
+ index -= layout->preedit_len;
+ else if (index > display->insert_index)
+ {
+ index = display->insert_index;
+ trailing = 0;
+ }
}
_gtk_text_btree_get_iter_at_line (_gtk_text_buffer_get_btree (layout->buffer),
*cursor_pos = context_xim->preedit_cursor;
}
-static void
+static int
preedit_start_callback (XIC xic,
XPointer client_data,
XPointer call_data)
if (!context_xim->finalizing)
g_signal_emit_by_name (context, "preedit_start");
+
+ return -1; /* No length limit */
}
static void
* stroke if both key pressed and released events are filtered.
* (bugzilla #81759)
*/
- guint32 mask = 0xaaaaaaaa;
+ gulong mask = 0xaaaaaaaa;
XGetICValues (xic,
XNFilterEvents, &mask,
NULL);